<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Pepr3D: D:/Home/MFF/1-Mgr/projekt/pepr3d/src/ui/MainApplication.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="pepr3d_icon.svg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Pepr3D
   &#160;<span id="projectnumber">v1.0</span>
   </div>
   <div id="projectbrief">Pepr3D is a 3D graphics editor designed for FDM printing</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_main_application_8h_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">MainApplication.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">//#if defined(NDEBUG)</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//#define CI_MIN_LOG_LEVEL 3 // warnings</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">//#endif</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &quot;cinder/app/App.h&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &quot;cinder/app/RendererGl.h&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &quot;cinder/gl/TextureFont.h&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &quot;cinder/gl/gl.h&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &quot;peprimgui.h&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &quot;ThreadPool.h&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &quot;AssetNotFoundException.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;Dialog.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;FontStorage.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;Hotkeys.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;ModelView.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;ProgressIndicator.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;SidePane.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;Toolbar.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;commands/CommandManager.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;geometry/ExportType.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacepepr3d.html">pepr3d</a> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">class </span>Tool;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">class </span>Geometry;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="keyword">using</span> cinder::app::FileDropEvent;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">using</span> cinder::app::KeyEvent;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">using</span> cinder::app::MouseEvent;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html">   38</a></span>&#160;<span class="keyword">class </span><a class="code" href="classpepr3d_1_1_main_application.html">MainApplication</a> : <span class="keyword">public</span> cinder::app::App {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;   <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a5b6116d8f876a0ffe82ac50a79699a80">setup</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#aaeaff9b43639879dc3f318c97ae28a78">update</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#abc78d4bf492874de9bfd6f38fdc0a9d1">draw</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#aa65c16b49a329894f4c11e8ec170ff77">resize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a6f78d23316feefe9fa47d175945a9539">mouseDown</a>(MouseEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a37906240fbe8298da4cee85823beb9d3">mouseDrag</a>(MouseEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#acbb75130b69f0da2f12f87322e976fd5">mouseUp</a>(MouseEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a80d67681ea10a5ed21bc8c5004f1ad94">mouseWheel</a>(MouseEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#afe0f99dcc618f5820a9f947bde3fd14b">mouseMove</a>(MouseEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a5328b13b9f1d06c7897f503e32ddfcc7">fileDrop</a>(FileDropEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#aba1caad067c409097504d7a4d2ce52ee">keyDown</a>(KeyEvent event) <span class="keyword">override</span>;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    <a class="code" href="classpepr3d_1_1_main_application.html">MainApplication</a>();</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a2cdfe5b197e302f0097e62cb7ba7c47c">   88</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a2cdfe5b197e302f0097e62cb7ba7c47c">prepareSettings</a>(<a class="code" href="classpepr3d_1_1_settings.html">Settings</a>* settings) {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        assert(settings != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#if defined(CINDER_MSW_DESKTOP) &amp;&amp; !defined(NDEBUG)</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        settings-&gt;setConsoleWindowEnabled(<span class="keyword">true</span>);</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    }</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a09c365abb40896d8d680b311b352c726">   96</a></span>&#160;    static ::ThreadPool&amp; <a class="code" href="classpepr3d_1_1_main_application.html#a09c365abb40896d8d680b311b352c726">getThreadPool</a>() {</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordflow">return</span> sThreadPool;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    }</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a729e5a9d504e19d4d9ded03b36389e72">  101</a></span>&#160;    <a class="code" href="classpepr3d_1_1_toolbar.html">Toolbar</a>&amp; <a class="code" href="classpepr3d_1_1_main_application.html#a729e5a9d504e19d4d9ded03b36389e72">getToolbar</a>() {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        <span class="keywordflow">return</span> mToolbar;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a0cdfc3de57eb4d504a1c03ddd6089670">  106</a></span>&#160;    <a class="code" href="classpepr3d_1_1_side_pane.html">SidePane</a>&amp; <a class="code" href="classpepr3d_1_1_main_application.html#a0cdfc3de57eb4d504a1c03ddd6089670">getSidePane</a>() {</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="keywordflow">return</span> mSidePane;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    }</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ab1e84ebe5d446b18eb977b325a8b9afc">  111</a></span>&#160;    <a class="code" href="classpepr3d_1_1_model_view.html">ModelView</a>&amp; <a class="code" href="classpepr3d_1_1_main_application.html#ab1e84ebe5d446b18eb977b325a8b9afc">getModelView</a>() {</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <span class="keywordflow">return</span> mModelView;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    }</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#abaccd25f162b70a1d56eef7dfa5f6d35">  116</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classpepr3d_1_1_main_application.html#abaccd25f162b70a1d56eef7dfa5f6d35">isDemoWindowShown</a>() {</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">return</span> mShowDemoWindow;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    }</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ac5472dc8c46954026bd65c72ef3de3e9">  121</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#ac5472dc8c46954026bd65c72ef3de3e9">showDemoWindow</a>(<span class="keywordtype">bool</span> show = <span class="keyword">true</span>) {</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        mShowDemoWindow = show;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a91ce9fd9f93a11384734e98e72173609">openFile</a>(<span class="keyword">const</span> std::string&amp; path);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="keyword">using</span> ToolsVector = std::vector&lt;std::unique_ptr&lt;Tool&gt;&gt;;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a0e7e06ee55cd65c2bdc30ec2742f50ab">  131</a></span>&#160;    ToolsVector::iterator <a class="code" href="classpepr3d_1_1_main_application.html#a0e7e06ee55cd65c2bdc30ec2742f50ab">getToolsBegin</a>() {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">return</span> mTools.begin();</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    }</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a71cb88d088358a0121a080f728126eef">  136</a></span>&#160;    ToolsVector::iterator <a class="code" href="classpepr3d_1_1_main_application.html#a71cb88d088358a0121a080f728126eef">getToolsEnd</a>() {</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">return</span> mTools.end();</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    }</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a8d69a67e452592afc6e7e2f6b7e6b9a0">  141</a></span>&#160;    ToolsVector::iterator <a class="code" href="classpepr3d_1_1_main_application.html#a8d69a67e452592afc6e7e2f6b7e6b9a0">getCurrentToolIterator</a>() {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        assert(mTools.size() &gt; 0);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        assert(mCurrentToolIterator != mTools.end());</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        <span class="keywordflow">return</span> mCurrentToolIterator;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    }</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a69aa1c6492d7ec045dcbcdb25b8d9912">  148</a></span>&#160;    <a class="code" href="classpepr3d_1_1_tool.html">Tool</a>* <a class="code" href="classpepr3d_1_1_main_application.html#a69aa1c6492d7ec045dcbcdb25b8d9912">getCurrentTool</a>() {</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        <span class="keywordflow">if</span>(mTools.size() &lt; 1 || mCurrentToolIterator == mTools.end()) {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        <span class="keywordflow">return</span> (*mCurrentToolIterator).get();</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    }</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ac5ea5ce0d25e8ff5c996eb33956ab9a8">  156</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#ac5ea5ce0d25e8ff5c996eb33956ab9a8">setCurrentToolIterator</a>(ToolsVector::iterator tool) {</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        assert(mTools.size() &gt; 0);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        assert(tool != mTools.end());</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        assert((*tool)-&gt;isEnabled());</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        (*mCurrentToolIterator)-&gt;onToolDeselect(mModelView);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        mCurrentToolIterator = tool;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        (*mCurrentToolIterator)-&gt;onToolSelect(mModelView);</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    }</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Tool&gt;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a429927346ea0766c39f0b713888f80fd">  168</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a429927346ea0766c39f0b713888f80fd">setCurrentTool</a>() {</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <span class="keyword">const</span> <span class="keyword">auto</span> toolIterator = std::find_if(mTools.begin(), mTools.end(),</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                                               [](<span class="keyword">auto</span>&amp; tool) { <span class="keywordflow">return</span> dynamic_cast&lt;Tool*&gt;(tool.get()) != <span class="keyword">nullptr</span>; });</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        <span class="keywordflow">if</span>(toolIterator != mTools.end()) {</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;            <a class="code" href="classpepr3d_1_1_main_application.html#ac5ea5ce0d25e8ff5c996eb33956ab9a8">setCurrentToolIterator</a>(toolIterator);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        }</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    }</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ae47b18590297b63e6e0e5ae01fc027d5">  177</a></span>&#160;    <a class="code" href="classpepr3d_1_1_geometry.html">Geometry</a>* <a class="code" href="classpepr3d_1_1_main_application.html#ae47b18590297b63e6e0e5ae01fc027d5">getCurrentGeometry</a>() {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">return</span> mGeometry.get();</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a133b4db1b39af78dc68b5a9181eaabc7">  182</a></span>&#160;    <a class="code" href="classpepr3d_1_1_command_manager.html">CommandManager&lt;Geometry&gt;</a>* <a class="code" href="classpepr3d_1_1_main_application.html#a133b4db1b39af78dc68b5a9181eaabc7">getCommandManager</a>() {</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keywordflow">return</span> mCommandManager.get();</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    }</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt; supportedImportExtensions = {<span class="stringliteral">&quot;stl&quot;</span>, <span class="stringliteral">&quot;obj&quot;</span>, <span class="stringliteral">&quot;ply&quot;</span>};</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keyword">const</span> std::vector&lt;std::string&gt; supportedOpenExtensions = {<span class="stringliteral">&quot;p3d&quot;</span>};</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a7940de51f976d83f840e956be02481b3">showImportDialog</a>(<span class="keyword">const</span> std::vector&lt;std::string&gt;&amp; extensions);</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a82b879fdae70b8d0093c55c29bac2e5b">drawTooltipOnHover</a>(<span class="keyword">const</span> std::string&amp; label, <span class="keyword">const</span> std::string&amp; shortcut = <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                            <span class="keyword">const</span> std::string&amp; description = <span class="stringliteral">&quot;&quot;</span>, <span class="keyword">const</span> std::string&amp; disabled = <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                            glm::vec2 position = glm::vec2(-1.0f), glm::vec2 pivot = glm::vec2(0.0f));</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ae60f75eac8ad5d0ffda1541122c713a0">  199</a></span>&#160;    <a class="code" href="classpepr3d_1_1_font_storage.html">FontStorage</a>&amp; <a class="code" href="classpepr3d_1_1_main_application.html#ae60f75eac8ad5d0ffda1541122c713a0">getFontStorage</a>() {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordflow">return</span> mFontStorage;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    }</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a21f4278d6d389508667b7a6a7b984c8b">  204</a></span>&#160;    <span class="keyword">const</span> <a class="code" href="classpepr3d_1_1_hotkeys.html">Hotkeys</a>&amp; <a class="code" href="classpepr3d_1_1_main_application.html#a21f4278d6d389508667b7a6a7b984c8b">getHotkeys</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">return</span> mHotkeys;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#adafee6ac798a97a338f1de8b5cece5d4">  210</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#adafee6ac798a97a338f1de8b5cece5d4">pushDialog</a>(<span class="keyword">const</span> <a class="code" href="classpepr3d_1_1_dialog.html">pepr3d::Dialog</a>&amp; dialog) {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        mDialogQueue.push(dialog);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="comment">// log dialog details via Cinder:</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="keywordflow">switch</span>(dialog.<a class="code" href="classpepr3d_1_1_dialog.html#a3634fe3a89e32eeb2758cabf556e8f86">getType</a>()) {</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keywordflow">case</span> DialogType::Information: CI_LOG_I(dialog.<a class="code" href="classpepr3d_1_1_dialog.html#a176eac0bbf832b8688ebbd9f62c75bc0">getCaption</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; dialog.<a class="code" href="classpepr3d_1_1_dialog.html#ae355e45bb6a9d50ddaa2e83b16ae45e2">getMessage</a>()); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordflow">case</span> DialogType::Warning: CI_LOG_W(dialog.<a class="code" href="classpepr3d_1_1_dialog.html#a176eac0bbf832b8688ebbd9f62c75bc0">getCaption</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; dialog.<a class="code" href="classpepr3d_1_1_dialog.html#ae355e45bb6a9d50ddaa2e83b16ae45e2">getMessage</a>()); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordflow">case</span> DialogType::Error: CI_LOG_E(dialog.<a class="code" href="classpepr3d_1_1_dialog.html#a176eac0bbf832b8688ebbd9f62c75bc0">getCaption</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; dialog.<a class="code" href="classpepr3d_1_1_dialog.html#ae355e45bb6a9d50ddaa2e83b16ae45e2">getMessage</a>()); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="keywordflow">case</span> DialogType::FatalError: CI_LOG_F(dialog.<a class="code" href="classpepr3d_1_1_dialog.html#a176eac0bbf832b8688ebbd9f62c75bc0">getCaption</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span> &lt;&lt; dialog.<a class="code" href="classpepr3d_1_1_dialog.html#ae355e45bb6a9d50ddaa2e83b16ae45e2">getMessage</a>()); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        }</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    }</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a3a21c18b808ee9cc2033f8a41ff64329">saveProject</a>();</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a96e83b00512d96b952d231e2db1a634b">saveProjectAs</a>();</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#ab805488ee0fd1ec3548e92667e6ad248">  231</a></span>&#160;    ci::fs::path <a class="code" href="classpepr3d_1_1_main_application.html#ab805488ee0fd1ec3548e92667e6ad248">getRequiredAssetPath</a>(<span class="keyword">const</span> ci::fs::path&amp; relativePath) {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        ci::fs::path path = getAssetPath(relativePath);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keywordflow">if</span>(path.empty()) {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;            std::string message;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;            message += <span class="stringliteral">&quot;Pepr3D could not find the following file:\n\n&quot;</span>;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;            message += (ci::fs::path(<span class="stringliteral">&quot;assets&quot;</span>) / relativePath).<span class="keywordtype">string</span>();</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;            message += <span class="stringliteral">&quot;\n\nThis file is necessary and since it was not found, Pepr3D has to be terminated. &quot;</span>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;            message += <span class="stringliteral">&quot;Downloading Pepr3D again or reinstalling it should solve this problem.&quot;</span>;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            <a class="code" href="classpepr3d_1_1_main_application.html#adafee6ac798a97a338f1de8b5cece5d4">pushDialog</a>(<a class="code" href="classpepr3d_1_1_dialog.html">Dialog</a>(DialogType::FatalError, <span class="stringliteral">&quot;Could not find a required asset&quot;</span>, message, <span class="stringliteral">&quot;Exit Pepr3D&quot;</span>));</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            <span class="keywordflow">throw</span> <a class="code" href="classpepr3d_1_1_asset_not_found_exception.html">AssetNotFoundException</a>(</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                std::string(<span class="stringliteral">&quot;Could not find required asset &quot;</span>).append(relativePath.string()).c_str());</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        }</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    }</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#acfab9e02ede45fc96c2716370fdda96c">  248</a></span>&#160;    ci::DataSourceRef <a class="code" href="classpepr3d_1_1_main_application.html#acfab9e02ede45fc96c2716370fdda96c">loadRequiredAsset</a>(<span class="keyword">const</span> ci::fs::path&amp; relativePath) {</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <a class="code" href="classpepr3d_1_1_main_application.html#ab805488ee0fd1ec3548e92667e6ad248">getRequiredAssetPath</a>(relativePath);</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">return</span> loadAsset(relativePath);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    }</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OperationFunc, <span class="keyword">typename</span> PostOperationFunc&gt;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#a4dcd1d98fa39ff7769fff445f7e5563c">  258</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a4dcd1d98fa39ff7769fff445f7e5563c">enqueueSlowOperation</a>(OperationFunc operation, PostOperationFunc postOperation, <span class="keywordtype">bool</span> showIndicator = <span class="keyword">true</span>) {</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        <span class="keywordflow">if</span>(showIndicator) {</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;            mProgressIndicator.<a class="code" href="classpepr3d_1_1_progress_indicator.html#ac0931998aeb37b012ca79b418896044b">setGeometryInProgress</a>(mGeometry);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        }</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        dispatchAsync([operation, postOperation, <span class="keyword">this</span>]() {</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;            sThreadPool.enqueue([operation, postOperation, <span class="keyword">this</span>]() {</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                operation();</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                dispatchAsync([postOperation, <span class="keyword">this</span>]() {</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                    postOperation();</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                    mProgressIndicator.<a class="code" href="classpepr3d_1_1_progress_indicator.html#ac0931998aeb37b012ca79b418896044b">setGeometryInProgress</a>(<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                });</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;            });</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        });</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    }</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="classpepr3d_1_1_main_application.html#afd1be24404f0c0b26517970c77212603">  274</a></span>&#160;    std::string <a class="code" href="classpepr3d_1_1_main_application.html#afd1be24404f0c0b26517970c77212603">getGeometryFileName</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keywordflow">return</span> mGeometryFileName;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    }</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;   <span class="keyword">private</span>:</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#ab109e61da72a727f217fa9e715642c42">setupLogging</a>();</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a2e368d949ee47ce6466d2abd992e9e9f">setupFonts</a>();</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#ac2ab8320c6d5bc477b5b44a518e32dbd">setupIcon</a>();</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a3b26419f0dc484c466b4b65686cb09d5">willResignActive</a>();</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a2692d734374d2a74c63b45f0856baf1a">didBecomeActive</a>();</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classpepr3d_1_1_main_application.html#a5a9f2357108cc7c32b640559723f5270">isWindowObscured</a>();</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classpepr3d_1_1_main_application.html#a8c723a7f716f24de66df40affcd63add">showLoadingErrorDialog</a>();</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#a8792c0f1e1c151da1d7fa2b1ff05643d">loadHotkeysFromFile</a>(<span class="keyword">const</span> std::string&amp; path);</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classpepr3d_1_1_main_application.html#ab0fb0391cc13ce9fab835893246a945b">saveHotkeysToFile</a>(<span class="keyword">const</span> std::string&amp; path);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keywordtype">bool</span> mShouldSkipDraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="keywordtype">bool</span> mIsFocused = <span class="keyword">true</span>;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    ci::gl::FboRef mFramebuffer;  <span class="comment">// we render Toolbar, ModelView, and SidePane to a framebuffer so that we can use it</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;                                  <span class="comment">// in multithreading</span></div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <a class="code" href="classpepr3d_1_1_hotkeys.html">Hotkeys</a> mHotkeys;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    glm::vec2 mLastTooltipSize = glm::vec2(0.0f);</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    peprimgui::PeprImGui mImGui;  <span class="comment">// ImGui wrapper for Cinder/Pepr3D</span></div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <a class="code" href="classpepr3d_1_1_font_storage.html">FontStorage</a> mFontStorage;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    <a class="code" href="classpepr3d_1_1_toolbar.html">Toolbar</a> mToolbar;</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <a class="code" href="classpepr3d_1_1_side_pane.html">SidePane</a> mSidePane;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    <a class="code" href="classpepr3d_1_1_model_view.html">ModelView</a> mModelView;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <a class="code" href="classpepr3d_1_1_progress_indicator.html">ProgressIndicator</a> mProgressIndicator;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    <span class="keywordtype">bool</span> mShowDemoWindow = <span class="keyword">false</span>;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    std::priority_queue&lt;pepr3d::Dialog&gt; mDialogQueue;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    ToolsVector mTools;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    ToolsVector::iterator mCurrentToolIterator;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    std::shared_ptr&lt;Geometry&gt; mGeometry;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    std::shared_ptr&lt;Geometry&gt;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        mGeometryInProgress;  <span class="comment">// used for async loading of Geometry, is nullptr if nothing is being loaded</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    std::unique_ptr&lt;CommandManager&lt;Geometry&gt;&gt; mCommandManager;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    std::string mGeometryFileName;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    <span class="keywordtype">bool</span> mShouldSaveAs = <span class="keyword">true</span>;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    std::size_t mLastVersionSaved = std::numeric_limits&lt;std::size_t&gt;::max();</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    <span class="keywordtype">bool</span> mIsGeometryDirty = <span class="keyword">false</span>;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    static ::ThreadPool sThreadPool;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;};</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;}  <span class="comment">// namespace pepr3d</span></div><div class="ttc" id="classpepr3d_1_1_main_application_html_a2e368d949ee47ce6466d2abd992e9e9f"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a2e368d949ee47ce6466d2abd992e9e9f">pepr3d::MainApplication::setupFonts</a></div><div class="ttdeci">void setupFonts()</div><div class="ttdoc">Setups ImGui fonts and FontStorage.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:457</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a8792c0f1e1c151da1d7fa2b1ff05643d"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a8792c0f1e1c151da1d7fa2b1ff05643d">pepr3d::MainApplication::loadHotkeysFromFile</a></div><div class="ttdeci">void loadHotkeysFromFile(const std::string &amp;path)</div><div class="ttdoc">Loads Hotkeys from a file.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:274</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ab109e61da72a727f217fa9e715642c42"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ab109e61da72a727f217fa9e715642c42">pepr3d::MainApplication::setupLogging</a></div><div class="ttdeci">void setupLogging()</div><div class="ttdoc">Setups Cinder logging (warnings and errors in Release) and FatalLogger.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:121</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_aba1caad067c409097504d7a4d2ce52ee"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#aba1caad067c409097504d7a4d2ce52ee">pepr3d::MainApplication::keyDown</a></div><div class="ttdeci">void keyDown(KeyEvent event) override</div><div class="ttdoc">Called by Cinder. Receive key-down events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:188</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a6f78d23316feefe9fa47d175945a9539"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a6f78d23316feefe9fa47d175945a9539">pepr3d::MainApplication::mouseDown</a></div><div class="ttdeci">void mouseDown(MouseEvent event) override</div><div class="ttdoc">Called by Cinder. Receive mouse-down events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:161</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a82b879fdae70b8d0093c55c29bac2e5b"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a82b879fdae70b8d0093c55c29bac2e5b">pepr3d::MainApplication::drawTooltipOnHover</a></div><div class="ttdeci">void drawTooltipOnHover(const std::string &amp;label, const std::string &amp;shortcut=&quot;&quot;, const std::string &amp;description=&quot;&quot;, const std::string &amp;disabled=&quot;&quot;, glm::vec2 position=glm::vec2(-1.0f), glm::vec2 pivot=glm::vec2(0.0f))</div><div class="ttdoc">Draws a tooltip if the previous ImGui item was hovered. Optionally you can set a custom position and ...</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:522</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_afe0f99dcc618f5820a9f947bde3fd14b"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#afe0f99dcc618f5820a9f947bde3fd14b">pepr3d::MainApplication::mouseMove</a></div><div class="ttdeci">void mouseMove(MouseEvent event) override</div><div class="ttdoc">Called by Cinder. Receive mouse-move events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:177</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a69aa1c6492d7ec045dcbcdb25b8d9912"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a69aa1c6492d7ec045dcbcdb25b8d9912">pepr3d::MainApplication::getCurrentTool</a></div><div class="ttdeci">Tool * getCurrentTool()</div><div class="ttdoc">Get a pointer of the currently selected Tool.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:148</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ac5472dc8c46954026bd65c72ef3de3e9"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ac5472dc8c46954026bd65c72ef3de3e9">pepr3d::MainApplication::showDemoWindow</a></div><div class="ttdeci">void showDemoWindow(bool show=true)</div><div class="ttdoc">Set if the ImGui demo window should be shown.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:121</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_abaccd25f162b70a1d56eef7dfa5f6d35"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#abaccd25f162b70a1d56eef7dfa5f6d35">pepr3d::MainApplication::isDemoWindowShown</a></div><div class="ttdeci">bool isDemoWindowShown()</div><div class="ttdoc">Returns true if the ImGui demo window is shown.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:116</div></div>
<div class="ttc" id="namespacepepr3d_html"><div class="ttname"><a href="namespacepepr3d.html">pepr3d</a></div><div class="ttdoc">Fix for CGAL bugs in polygon with holes verification Contained in CGAL PR #3688, likely to be in 4....</div><div class="ttdef"><b>Definition:</b> CmdColorManager.h:9</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a8d69a67e452592afc6e7e2f6b7e6b9a0"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a8d69a67e452592afc6e7e2f6b7e6b9a0">pepr3d::MainApplication::getCurrentToolIterator</a></div><div class="ttdeci">ToolsVector::iterator getCurrentToolIterator()</div><div class="ttdoc">Get the iterator of the currently selected Tool.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:141</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a80d67681ea10a5ed21bc8c5004f1ad94"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a80d67681ea10a5ed21bc8c5004f1ad94">pepr3d::MainApplication::mouseWheel</a></div><div class="ttdeci">void mouseWheel(MouseEvent event) override</div><div class="ttdoc">Called by Cinder. Receive mouse-wheel events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:173</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_aaeaff9b43639879dc3f318c97ae28a78"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#aaeaff9b43639879dc3f318c97ae28a78">pepr3d::MainApplication::update</a></div><div class="ttdeci">void update() override</div><div class="ttdoc">Called by Cinder. Perform any once-per-loop computation.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:382</div></div>
<div class="ttc" id="classpepr3d_1_1_command_manager_html"><div class="ttname"><a href="classpepr3d_1_1_command_manager.html">pepr3d::CommandManager</a></div><div class="ttdoc">CommandManager handles all undoable operations on target in the form of commands See.</div><div class="ttdef"><b>Definition:</b> CommandManager.h:15</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ac5ea5ce0d25e8ff5c996eb33956ab9a8"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ac5ea5ce0d25e8ff5c996eb33956ab9a8">pepr3d::MainApplication::setCurrentToolIterator</a></div><div class="ttdeci">void setCurrentToolIterator(ToolsVector::iterator tool)</div><div class="ttdoc">Set the iterator of the Tool you want to be selected.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:156</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a7940de51f976d83f840e956be02481b3"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a7940de51f976d83f840e956be02481b3">pepr3d::MainApplication::showImportDialog</a></div><div class="ttdeci">void showImportDialog(const std::vector&lt; std::string &gt; &amp;extensions)</div><div class="ttdoc">Opens the file dialog for import.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:506</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_adafee6ac798a97a338f1de8b5cece5d4"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#adafee6ac798a97a338f1de8b5cece5d4">pepr3d::MainApplication::pushDialog</a></div><div class="ttdeci">void pushDialog(const pepr3d::Dialog &amp;dialog)</div><div class="ttdoc">Pushes a new dialog to the priority queue of the application. If it is a fatal error dialog,...</div><div class="ttdef"><b>Definition:</b> MainApplication.h:210</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_afd1be24404f0c0b26517970c77212603"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#afd1be24404f0c0b26517970c77212603">pepr3d::MainApplication::getGeometryFileName</a></div><div class="ttdeci">std::string getGeometryFileName() const</div><div class="ttdoc">Returns the path to the current Geometry file.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:274</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a37906240fbe8298da4cee85823beb9d3"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a37906240fbe8298da4cee85823beb9d3">pepr3d::MainApplication::mouseDrag</a></div><div class="ttdeci">void mouseDrag(MouseEvent event) override</div><div class="ttdoc">Called by Cinder. Receive mouse-drag events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:165</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a4dcd1d98fa39ff7769fff445f7e5563c"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a4dcd1d98fa39ff7769fff445f7e5563c">pepr3d::MainApplication::enqueueSlowOperation</a></div><div class="ttdeci">void enqueueSlowOperation(OperationFunc operation, PostOperationFunc postOperation, bool showIndicator=true)</div><div class="ttdoc">Schedules operation to be executed in a separate thread in a thread pool. If showIndicator is true,...</div><div class="ttdef"><b>Definition:</b> MainApplication.h:258</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a5a9f2357108cc7c32b640559723f5270"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a5a9f2357108cc7c32b640559723f5270">pepr3d::MainApplication::isWindowObscured</a></div><div class="ttdeci">bool isWindowObscured()</div><div class="ttdoc">Returns true if the main window is obscured by another window or windows (only on Windows)....</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:599</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ae47b18590297b63e6e0e5ae01fc027d5"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ae47b18590297b63e6e0e5ae01fc027d5">pepr3d::MainApplication::getCurrentGeometry</a></div><div class="ttdeci">Geometry * getCurrentGeometry()</div><div class="ttdoc">Returns a pointer to the current Geometry.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:177</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a71cb88d088358a0121a080f728126eef"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a71cb88d088358a0121a080f728126eef">pepr3d::MainApplication::getToolsEnd</a></div><div class="ttdeci">ToolsVector::iterator getToolsEnd()</div><div class="ttdoc">Get the end iterator of the current vector of Tool.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:136</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ae60f75eac8ad5d0ffda1541122c713a0"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ae60f75eac8ad5d0ffda1541122c713a0">pepr3d::MainApplication::getFontStorage</a></div><div class="ttdeci">FontStorage &amp; getFontStorage()</div><div class="ttdoc">Returns a reference to the FontStorage.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:199</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a5328b13b9f1d06c7897f503e32ddfcc7"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a5328b13b9f1d06c7897f503e32ddfcc7">pepr3d::MainApplication::fileDrop</a></div><div class="ttdeci">void fileDrop(FileDropEvent event) override</div><div class="ttdoc">Called by Cinder. Receive file-drop events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:181</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a133b4db1b39af78dc68b5a9181eaabc7"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a133b4db1b39af78dc68b5a9181eaabc7">pepr3d::MainApplication::getCommandManager</a></div><div class="ttdeci">CommandManager&lt; Geometry &gt; * getCommandManager()</div><div class="ttdoc">Returns a pointer to the current CommandManager.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:182</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a2cdfe5b197e302f0097e62cb7ba7c47c"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a2cdfe5b197e302f0097e62cb7ba7c47c">pepr3d::MainApplication::prepareSettings</a></div><div class="ttdeci">static void prepareSettings(Settings *settings)</div><div class="ttdoc">Called by Cinder. Prepare settings before setting up the application.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:88</div></div>
<div class="ttc" id="classpepr3d_1_1_tool_html"><div class="ttname"><a href="classpepr3d_1_1_tool.html">pepr3d::Tool</a></div><div class="ttdoc">A base class of all tools that the user can select and manipulate the Geometry and application with t...</div><div class="ttdef"><b>Definition:</b> Tool.h:18</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_acfab9e02ede45fc96c2716370fdda96c"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#acfab9e02ede45fc96c2716370fdda96c">pepr3d::MainApplication::loadRequiredAsset</a></div><div class="ttdeci">ci::DataSourceRef loadRequiredAsset(const ci::fs::path &amp;relativePath)</div><div class="ttdoc">Behaves same as Cinder's loadAsset, but in this case, if the asset is not found, a fatal error Dialog...</div><div class="ttdef"><b>Definition:</b> MainApplication.h:248</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a729e5a9d504e19d4d9ded03b36389e72"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a729e5a9d504e19d4d9ded03b36389e72">pepr3d::MainApplication::getToolbar</a></div><div class="ttdeci">Toolbar &amp; getToolbar()</div><div class="ttdoc">Returns a reference to the Toolbar.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:101</div></div>
<div class="ttc" id="classpepr3d_1_1_font_storage_html"><div class="ttname"><a href="classpepr3d_1_1_font_storage.html">pepr3d::FontStorage</a></div><div class="ttdoc">Keeps pointers to all fonts used in the user interface (regular, small, and icons)</div><div class="ttdef"><b>Definition:</b> FontStorage.h:8</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a5b6116d8f876a0ffe82ac50a79699a80"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a5b6116d8f876a0ffe82ac50a79699a80">pepr3d::MainApplication::setup</a></div><div class="ttdeci">void setup() override</div><div class="ttdoc">Called by Cinder. Perform any application setup after the Renderer has been initialized.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:52</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a8c723a7f716f24de66df40affcd63add"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a8c723a7f716f24de66df40affcd63add">pepr3d::MainApplication::showLoadingErrorDialog</a></div><div class="ttdeci">bool showLoadingErrorDialog()</div><div class="ttdoc">Detects if any error happened during the loading of new Geometry. Returns true if no errors occured (...</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:223</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_abc78d4bf492874de9bfd6f38fdc0a9d1"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#abc78d4bf492874de9bfd6f38fdc0a9d1">pepr3d::MainApplication::draw</a></div><div class="ttdeci">void draw() override</div><div class="ttdoc">Called by Cinder. Perform any rendering once-per-loop or in response to OS-prompted requests for refr...</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:410</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a09c365abb40896d8d680b311b352c726"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a09c365abb40896d8d680b311b352c726">pepr3d::MainApplication::getThreadPool</a></div><div class="ttdeci">::ThreadPool &amp; getThreadPool()</div><div class="ttdoc">Returns a single instance of the ThreadPool.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:96</div></div>
<div class="ttc" id="classpepr3d_1_1_hotkeys_html"><div class="ttname"><a href="classpepr3d_1_1_hotkeys.html">pepr3d::Hotkeys</a></div><div class="ttdoc">All hotkeys and their corresponding actions.</div><div class="ttdef"><b>Definition:</b> Hotkeys.h:176</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_aa65c16b49a329894f4c11e8ec170ff77"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#aa65c16b49a329894f4c11e8ec170ff77">pepr3d::MainApplication::resize</a></div><div class="ttdeci">void resize() override</div><div class="ttdoc">Called by Cinder. Receive window resize events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:150</div></div>
<div class="ttc" id="classpepr3d_1_1_settings_html"><div class="ttname"><a href="classpepr3d_1_1_settings.html">pepr3d::Settings</a></div><div class="ttdoc">Tool used for configuring the color palette and application.</div><div class="ttdef"><b>Definition:</b> Settings.h:9</div></div>
<div class="ttc" id="classpepr3d_1_1_model_view_html"><div class="ttname"><a href="classpepr3d_1_1_model_view.html">pepr3d::ModelView</a></div><div class="ttdoc">The main part of the user interface, shows the geometry to the user.</div><div class="ttdef"><b>Definition:</b> ModelView.h:19</div></div>
<div class="ttc" id="classpepr3d_1_1_progress_indicator_html_ac0931998aeb37b012ca79b418896044b"><div class="ttname"><a href="classpepr3d_1_1_progress_indicator.html#ac0931998aeb37b012ca79b418896044b">pepr3d::ProgressIndicator::setGeometryInProgress</a></div><div class="ttdeci">void setGeometryInProgress(std::shared_ptr&lt; Geometry &gt; geometry)</div><div class="ttdoc">Sets the current Geometry whose GeometryProgress is going to be used.</div><div class="ttdef"><b>Definition:</b> ProgressIndicator.h:21</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a21f4278d6d389508667b7a6a7b984c8b"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a21f4278d6d389508667b7a6a7b984c8b">pepr3d::MainApplication::getHotkeys</a></div><div class="ttdeci">const Hotkeys &amp; getHotkeys() const</div><div class="ttdoc">Returns a reference to the Hotkeys.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:204</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a96e83b00512d96b952d231e2db1a634b"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a96e83b00512d96b952d231e2db1a634b">pepr3d::MainApplication::saveProjectAs</a></div><div class="ttdeci">void saveProjectAs()</div><div class="ttdoc">Opens a file dialog to save the .p3d serialized file of the current Geometry.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:636</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ab1e84ebe5d446b18eb977b325a8b9afc"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ab1e84ebe5d446b18eb977b325a8b9afc">pepr3d::MainApplication::getModelView</a></div><div class="ttdeci">ModelView &amp; getModelView()</div><div class="ttdoc">Returns a reference to the ModelView.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:111</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ab805488ee0fd1ec3548e92667e6ad248"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ab805488ee0fd1ec3548e92667e6ad248">pepr3d::MainApplication::getRequiredAssetPath</a></div><div class="ttdeci">ci::fs::path getRequiredAssetPath(const ci::fs::path &amp;relativePath)</div><div class="ttdoc">Behaves same as Cinder's getAssetPath, but in this case, if the asset is not found,...</div><div class="ttdef"><b>Definition:</b> MainApplication.h:231</div></div>
<div class="ttc" id="classpepr3d_1_1_geometry_html"><div class="ttname"><a href="classpepr3d_1_1_geometry.html">pepr3d::Geometry</a></div><div class="ttdoc">The whole geometry of a model that the user is painting.</div><div class="ttdef"><b>Definition:</b> Geometry.h:34</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a3a21c18b808ee9cc2033f8a41ff64329"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a3a21c18b808ee9cc2033f8a41ff64329">pepr3d::MainApplication::saveProject</a></div><div class="ttdeci">void saveProject()</div><div class="ttdoc">Saves the .p3d serialized file of the current Geometry to the same file as was used previously....</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:682</div></div>
<div class="ttc" id="classpepr3d_1_1_dialog_html"><div class="ttname"><a href="classpepr3d_1_1_dialog.html">pepr3d::Dialog</a></div><div class="ttdoc">Represents a modal dialog shown to a user in the user interface in front of everything else.</div><div class="ttdef"><b>Definition:</b> Dialog.h:10</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a429927346ea0766c39f0b713888f80fd"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a429927346ea0766c39f0b713888f80fd">pepr3d::MainApplication::setCurrentTool</a></div><div class="ttdeci">void setCurrentTool()</div><div class="ttdoc">Set the Tool (in template) as selected. Usage: setCurrentTool&lt;PaintBucket&gt;()</div><div class="ttdef"><b>Definition:</b> MainApplication.h:168</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ab0fb0391cc13ce9fab835893246a945b"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ab0fb0391cc13ce9fab835893246a945b">pepr3d::MainApplication::saveHotkeysToFile</a></div><div class="ttdeci">void saveHotkeysToFile(const std::string &amp;path)</div><div class="ttdoc">Saves Hotkeys to a file.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:280</div></div>
<div class="ttc" id="classpepr3d_1_1_dialog_html_ae355e45bb6a9d50ddaa2e83b16ae45e2"><div class="ttname"><a href="classpepr3d_1_1_dialog.html#ae355e45bb6a9d50ddaa2e83b16ae45e2">pepr3d::Dialog::getMessage</a></div><div class="ttdeci">std::string getMessage() const</div><div class="ttdoc">Returns the message (description) of this dialog.</div><div class="ttdef"><b>Definition:</b> Dialog.h:35</div></div>
<div class="ttc" id="classpepr3d_1_1_progress_indicator_html"><div class="ttname"><a href="classpepr3d_1_1_progress_indicator.html">pepr3d::ProgressIndicator</a></div><div class="ttdoc">User interface for showing a current progress, contains a spinner and progress bars.</div><div class="ttdef"><b>Definition:</b> ProgressIndicator.h:18</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a0cdfc3de57eb4d504a1c03ddd6089670"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a0cdfc3de57eb4d504a1c03ddd6089670">pepr3d::MainApplication::getSidePane</a></div><div class="ttdeci">SidePane &amp; getSidePane()</div><div class="ttdoc">Returns a reference to the SidePane.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:106</div></div>
<div class="ttc" id="classpepr3d_1_1_toolbar_html"><div class="ttname"><a href="classpepr3d_1_1_toolbar.html">pepr3d::Toolbar</a></div><div class="ttdoc">A top part of the user interface that shows a File menu, Undo, Redo, and all tools.</div><div class="ttdef"><b>Definition:</b> Toolbar.h:15</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a3b26419f0dc484c466b4b65686cb09d5"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a3b26419f0dc484c466b4b65686cb09d5">pepr3d::MainApplication::willResignActive</a></div><div class="ttdeci">void willResignActive()</div><div class="ttdoc">Called when the main window loses focus.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:588</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html"><div class="ttname"><a href="classpepr3d_1_1_main_application.html">pepr3d::MainApplication</a></div><div class="ttdoc">The main Cinder-based application, represents a window, handles events, thread pool,...</div><div class="ttdef"><b>Definition:</b> MainApplication.h:38</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_acbb75130b69f0da2f12f87322e976fd5"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#acbb75130b69f0da2f12f87322e976fd5">pepr3d::MainApplication::mouseUp</a></div><div class="ttdeci">void mouseUp(MouseEvent event) override</div><div class="ttdoc">Called by Cinder. Receive mouse-up events.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:169</div></div>
<div class="ttc" id="classpepr3d_1_1_side_pane_html"><div class="ttname"><a href="classpepr3d_1_1_side_pane.html">pepr3d::SidePane</a></div><div class="ttdoc">Right side of the user interface that displays options of the currently selected tool.</div><div class="ttdef"><b>Definition:</b> SidePane.h:13</div></div>
<div class="ttc" id="classpepr3d_1_1_dialog_html_a3634fe3a89e32eeb2758cabf556e8f86"><div class="ttname"><a href="classpepr3d_1_1_dialog.html#a3634fe3a89e32eeb2758cabf556e8f86">pepr3d::Dialog::getType</a></div><div class="ttdeci">DialogType getType() const</div><div class="ttdoc">Returns DialogType of this dialog.</div><div class="ttdef"><b>Definition:</b> Dialog.h:25</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a0e7e06ee55cd65c2bdc30ec2742f50ab"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a0e7e06ee55cd65c2bdc30ec2742f50ab">pepr3d::MainApplication::getToolsBegin</a></div><div class="ttdeci">ToolsVector::iterator getToolsBegin()</div><div class="ttdoc">Get the begin iterator of the current vector of Tool.</div><div class="ttdef"><b>Definition:</b> MainApplication.h:131</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a91ce9fd9f93a11384734e98e72173609"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a91ce9fd9f93a11384734e98e72173609">pepr3d::MainApplication::openFile</a></div><div class="ttdeci">void openFile(const std::string &amp;path)</div><div class="ttdoc">Tries to open a file in the specified path and use it as the new Geometry.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:286</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_ac2ab8320c6d5bc477b5b44a518e32dbd"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#ac2ab8320c6d5bc477b5b44a518e32dbd">pepr3d::MainApplication::setupIcon</a></div><div class="ttdeci">void setupIcon()</div><div class="ttdoc">Setups a WinAPI icon of the main window (only on Windows).</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:496</div></div>
<div class="ttc" id="classpepr3d_1_1_asset_not_found_exception_html"><div class="ttname"><a href="classpepr3d_1_1_asset_not_found_exception.html">pepr3d::AssetNotFoundException</a></div><div class="ttdoc">Exception thrown when a required asset is not found in the assets/ directory.</div><div class="ttdef"><b>Definition:</b> AssetNotFoundException.h:9</div></div>
<div class="ttc" id="classpepr3d_1_1_main_application_html_a2692d734374d2a74c63b45f0856baf1a"><div class="ttname"><a href="classpepr3d_1_1_main_application.html#a2692d734374d2a74c63b45f0856baf1a">pepr3d::MainApplication::didBecomeActive</a></div><div class="ttdeci">void didBecomeActive()</div><div class="ttdoc">Called when the main window becomes focused.</div><div class="ttdef"><b>Definition:</b> MainApplication.cpp:593</div></div>
<div class="ttc" id="classpepr3d_1_1_dialog_html_a176eac0bbf832b8688ebbd9f62c75bc0"><div class="ttname"><a href="classpepr3d_1_1_dialog.html#a176eac0bbf832b8688ebbd9f62c75bc0">pepr3d::Dialog::getCaption</a></div><div class="ttdeci">std::string getCaption() const</div><div class="ttdoc">Returns the caption (title) of this dialog.</div><div class="ttdef"><b>Definition:</b> Dialog.h:30</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_da5c6b39c0a2f54e57df6799511cd3ab.html">ui</a></li><li class="navelem"><b>MainApplication.h</b></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
